package fr.pascal.client.ui;

import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.StyleInjector;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;

public class ListViewImpl extends Composite implements ListView {

	private static ListViewImplUiBinder uiBinder = GWT.create(ListViewImplUiBinder.class);

	interface ListViewImplUiBinder extends UiBinder<Widget, ListViewImpl> {
	}

	private Presenter presenter;
	
	@UiField
	AppResources res;
	
	@UiField
	Anchor chatAnchor;
	
	@UiField
	Anchor chienAnchor;
	
	@UiField
	Anchor chevalAnchor;
	
	@UiField
	Anchor crocodileAnchor;
	
	public ListViewImpl() {
		AppResources appResources = GWT.create(AppResources.class);
		StyleInjector.injectStylesheet(appResources.appCss().getText());
		initWidget(uiBinder.createAndBindUi(this));
	}

	@Override
	public void setPresenter(Presenter presenter) {
		this.presenter = presenter;
	}

	@UiHandler("chatAnchor")
	void onClickChat(ClickEvent e) {
		presenter.onClickAnimal(1);
	}
	
	@UiHandler("chienAnchor")
	void onClickChien(ClickEvent e) {
		presenter.onClickAnimal(2);
	}
	
	@UiHandler("chevalAnchor")
	void onClickCheval(ClickEvent e) {
		presenter.onClickAnimal(3);
	}
	
	@UiHandler("crocodileAnchor")
	void onClickCrocodile(ClickEvent e) {
		presenter.onClickAnimal(4);
	}

	@Override
	public void setStyle(int animalId) {
		switch (animalId) {
		case 1:
			chatAnchor.setStyleName(res.appCss().bordureRouge());
			chienAnchor.setStyleName(res.appCss().bordureNoire());
			chevalAnchor.setStyleName(res.appCss().bordureNoire());
			crocodileAnchor.setStyleName(res.appCss().bordureNoire());
			break;
		case 2:
			chatAnchor.setStyleName(res.appCss().bordureNoire());
			chienAnchor.setStyleName(res.appCss().bordureRouge());
			chevalAnchor.setStyleName(res.appCss().bordureNoire());
			crocodileAnchor.setStyleName(res.appCss().bordureNoire());
			break;
		case 3:
			chatAnchor.setStyleName(res.appCss().bordureNoire());
			chienAnchor.setStyleName(res.appCss().bordureNoire());
			chevalAnchor.setStyleName(res.appCss().bordureRouge());
			crocodileAnchor.setStyleName(res.appCss().bordureNoire());
			break;
		case 4:
			chatAnchor.setStyleName(res.appCss().bordureNoire());
			chienAnchor.setStyleName(res.appCss().bordureNoire());
			chevalAnchor.setStyleName(res.appCss().bordureNoire());
			crocodileAnchor.setStyleName(res.appCss().bordureRouge());
			break;
		default:
			chatAnchor.setStyleName(res.appCss().bordureNoire());
			chienAnchor.setStyleName(res.appCss().bordureNoire());
			chevalAnchor.setStyleName(res.appCss().bordureNoire());
			crocodileAnchor.setStyleName(res.appCss().bordureNoire());
			break;
		}
	}
}
